//#include<bits/stdc++.h>
//using namespace std;
//const int N = 1e5+10;
//typedef pair<int,int> PII;
//        int n,idx;
//unordered_map<int,int> mp;
//int post[N],ino[N];
//        vector<int> L,R;
//struct TreeNode{
//int val;
//TreeNode* left;
//TreeNode* right;
//TreeNode(int x): val(x),left(NULL),right(NULL){}
//};
//TreeNode *root;
//TreeNode *dfs(int l,int r)  //构建二叉树
//{
//    if(l>r) return NULL;
//    int pos=mp[post[idx]];
//    auto root=new TreeNode(post[idx--]);
//    root->right=dfs(pos+1,r);
//    root->left=dfs(l,pos-1);
//    return root;
//}
//int main()
//{
//    cin>>n;
//    idx=n-1;
//    for(int i=0;i<n;i++)
//    {
//        cin>>ino[i];
//        mp[ino[i]]=i;
//    }
//    for(int i=0;i<n;i++) cin>>post[i];
//    root=dfs(0,n-1);
//    queue<TreeNode*> q;
//    q.push(root);
//    while(q.size())
//    {
//        int len=q.size();
//        vector<int> temp;
//        for(int i=0;i<len;i++)
//        {
//            auto t=q.front(); q.pop();
//            temp.push_back(t->val);
//            if(t->left) q.push(t->left);
//            if(t->right) q.push(t->right);
//        }
//        L.push_back(temp[0]);   //L加入每层第一个数
//        R.push_back(temp[temp.size()-1]); //R中加入每层最后一个数
//    }
//    cout<<"R:"; for(auto x:R) cout<<" "<<x;
//    puts("");
//    cout<<"L:"; for(auto x:L) cout<<" "<<x;
//
//    return 0;
//}
